World Window
iOS host for the WorldWind engine. UIView with a CAEAGLLayer-backed framebuffer and a CADisplayLink-driven render loop.
Properties
K/N forbids mixing Kotlin interfaces with ObjC superclasses, so we forward instead of implementing WorldWind.EventListener directly. Exposed for :worldwind-compose.
Functions
Mac trackpad pinch -> camera dolly around the cursor (no UITouch events on indirect input).
Mac trackpad two-finger rotation -> camera heading. locationInView is the gesture centroid; we forward it so the controller can anchor the rotation around that point (matches iOS two-finger rotation focal-point model).
Mac trackpad two-finger pan -> camera tilt.
Idempotent. Hosts call from "did enter background"; GL context survives, textures stay uploaded across resume.
Synchronous variant of pickAsync. iOS has no separate GL thread, so we drain the pick frame inline on the main thread - the same model JVM's SelectDragDetector relies on (it wraps pickAsync in runBlocking). Without this, async pick-during-DOWN leaves a window where the navigation controller can start panning before we know whether the gesture should drag a renderable.